              IOI. 3 (Programare), Minsk, 1990.

Solutie (Vlad Atanasiu):

type leg=^pereche;
     pereche=record
             p1,p2:integer;
             end;
     pauz=record
          inceput,sfarsit:integer;
          end;

var EndTime,Lngth,N,i,durata:integer;
    T1,T2:array[1..100] of integer;
    pauza:pauz;

function sunt_paznici(timp:integer):leg;
         { intoarce 2 paznici daca exista cel putin 2 paznici la momentul timp.
           Daca nu, intoarce 0 }
var result:leg;
    i:integer;
begin
result^.p1:=0;
result^.p2:=0;
i:=1;
while (i<=N) and (result^.p2=0) do
      begin
      if (T1[i]<=timp) and (T2[i]>=timp) then
         if result^.p1<>0 then result^.p2:=i
                          else result^.p1:=i;
      i:=i+1;
      end;
sunt_paznici:=result;
end;

begin
readln(EndTime,N);
for i:=1 to n do readln(t1[i],t2[i]);
durata:=0;
pauza.inceput:=0;
pauza.sfarsit:=0;
for i:=1 to EndTime do
    if sunt_paznici(i)^.p2=0 then
       begin
       if durata=0 then writeln('Nu exista cel putin 2 paznici in fiecare moment.');
       if pauza.inceput=0 then pauza.inceput:=i;
       durata:=durata+1;
       end
    else if pauza.inceput<>0 then
            begin
            pauza.sfarsit:=i-1;
            writeln('(',pauza.inceput:3,',',pauza.sfarsit:3,')');
            pauza.inceput:=0;
            pauza.sfarsit:=0;
            end;
if pauza.inceput<>0 then
   begin
   pauza.sfarsit:=i;
   writeln('(',pauza.inceput:3,',',pauza.sfarsit:3,')');
   pauza.inceput:=0;
   pauza.sfarsit:=0;
   end;
if durata=0 then writeln('Exista cel putin 2 paznici in fiecare moment.')
else begin
     readln(Lngth);
     writeln('Mai sunt necesari ',trunc(durata/Lngth)+1:3,' paznici.');
     end;
end.
===============================
Test:
10 2
1 5
1 7
3
============================
